home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 44 / PC Actual CD 44.iso / Linux / Cygwin / full.exe / Disk1 / data1.cab / Tools / share / dejagnu / config / unix.exp < prev    next >
Encoding:
Text File  |  1998-12-04  |  3.9 KB  |  135 lines

  1. # Copyright (C) 92, 1993, 1994, 1996, 1997, 1998 Free Software Foundation, Inc.
  2.  
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; either version 2 of the License, or
  6. # (at your option) any later version.
  7. # This program is distributed in the hope that it will be useful,
  8. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10. # GNU General Public License for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with this program; if not, write to the Free Software
  13. # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  14.  
  15. # Please email any bugs, comments, and/or additions to this file to:
  16. # bug-gcc@prep.ai.mit.edu
  17.  
  18. # This file was written by Rob Savoye. (rob@cygnus.com)
  19.  
  20. if ![info exists board] {
  21.     error "must set $board before loading unix.exp"
  22. }
  23.  
  24. # For rcp_download, rsh_exec.
  25. load_lib remote.exp
  26.  
  27. #
  28. # unix_load -- load the program and execute it
  29. #
  30. # See default.exp for explanation of arguments and results.
  31. #
  32.  
  33.  
  34. proc unix_load { dest prog args } {
  35.     global ld_library_path
  36.     set output "";
  37.  
  38.     if { [llength $args] > 0 } {
  39.     set parg [lindex $args 0];
  40.     } else {
  41.     set parg ""
  42.     }
  43.  
  44.     if { [llength $args] > 1 } {
  45.     set inp [lindex $args 1];
  46.     } else {
  47.     set inp ""
  48.     }
  49.  
  50.     if ![file exists $prog] then {
  51.     # We call both here because this should never happen.
  52.     perror "$prog does not exist in unix_load."
  53.     verbose -log "$prog does not exist." 3
  54.     return "untested"
  55.     }
  56.     verbose "loading to $dest" 2
  57.     if ![is_remote $dest] {
  58.     if { "$inp" != "" } {
  59.         set command "$prog $parg < $inp"
  60.     } else {
  61.         set command "$prog $parg";
  62.     }
  63.  
  64.         if [info exists ld_library_path] {
  65.             setenv LD_LIBRARY_PATH $ld_library_path                 
  66.             setenv SHLIB_PATH $ld_library_path
  67.         }
  68.  
  69.     set id [remote_spawn $dest "$command" "readonly"];
  70.     if { $id < 0 } {
  71.         set output "remote_spawn failed"
  72.         set status -1;
  73.     } else {
  74.         set status [remote_wait $dest 300];
  75.         set output [lindex $status 1];
  76.         set status [lindex $status 0];
  77.     }
  78.     # Unset them so we don't potentially get hosed when we try to run a
  79.     # non-testcase executable. (Setting LD_LIBRARY_PATH is the wrong
  80.     # fix in the first place; this just tries to minimize the resulting
  81.     # crap.)
  82.     if [info exists ld_library_path] {
  83.         unsetenv LD_LIBRARY_PATH
  84.         unsetenv SHLIB_PATH
  85.     }
  86.     } else { 
  87.     set remotefile "/tmp/[file tail $prog].[pid]"
  88.     set remotefile [remote_download $dest $prog $remotefile];
  89.     if { $remotefile == "" } {
  90.         verbose -log "Download of $prog to [board_info $dest name] failed." 3
  91.         return [list "unresolved" ""];
  92.     }
  93.     if [board_info $dest exists remote_link] {
  94.         if [[board_info $dest remote_link] $remotefile] {
  95.         verbose -log "Couldn't do remote link"
  96.         remote_exec $dest "\\rm -f $remotefile"
  97.         return [list "unresolved" ""]
  98.         }
  99.  
  100.         verbose "$prog linked ok" 3
  101.     } else {
  102.         # rcp's to lynx seem not to get marked executable
  103.         set status [remote_exec $dest "chmod +x $remotefile"]
  104.         if { [lindex $status 0] != 0 } {
  105.         remote_file $dest delete ${remotefile}.o $remotefile
  106.         verbose -log "chmod +x of $prog on $dest failed." 3
  107.         return [list "unresolved" ""];
  108.         }
  109.     }
  110.     set status [remote_exec $dest "$remotefile" $parg $inp]
  111.     remote_file $dest delete $remotefile.o $remotefile;
  112.     if { [lindex $status 0] < 0 } {
  113.         verbose -log "Couldn't execute $prog, [lindex $status 1]" 3
  114.         return [list "unresolved" ""]
  115.     }
  116.     set output [lindex $status 1]
  117.     set status [lindex $status 0]
  118.     }
  119.  
  120.     verbose "Executed $prog, status $status" 2
  121.     if ![string match "" $output] {
  122.     verbose -- "$output" 2
  123.     }
  124.     if { $status == 0 } {
  125.     set result "pass";
  126.     } else {
  127.     set result "fail";
  128.     }
  129.     return [list $result $output];
  130. }
  131.  
  132. set_board_info protocol  "unix";
  133.